home *** CD-ROM | disk | FTP | other *** search
- /* GNUPLOT - mgr.trm */
- /*
- * This file is included by ../term.c.
- *
- * This terminal driver supports:
- * Mgr window system, color display
- *
- * AUTHOR
- * Vincent Broman, broman@nosc.mil
- */
- /*
- * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
- */
-
- #ifndef GOT_DRIVER_H
- #include "driver.h"
- #endif
-
- #ifdef TERM_REGISTER
- register_term(mgr)
- #endif
-
- #ifdef TERM_PROTO
- TERM_PUBLIC void MGR_init __P((void));
- TERM_PUBLIC void MGR_graphics __P((void));
- TERM_PUBLIC void MGR_text __P((void));
- TERM_PUBLIC void MGR_linetype __P((int linetype));
- TERM_PUBLIC void MGR_move __P((unsigned int x, unsigned int y));
- TERM_PUBLIC void MGR_vector __P((unsigned int x, unsigned int y));
- TERM_PUBLIC void MGR_put_text __P((unsigned int x, unsigned int y, char *str));
- TERM_PUBLIC void MGR_reset __P((void));
- #define MGR_XMAX 640
- #define MGR_YMAX 400
- #define MGR_VCHAR 16
- #define MGR_HCHAR 8
- #define MGR_VTIC 4
- #define MGR_HTIC 4
- #endif /* TERM_PROTO */
-
- #ifndef TERM_PROTO_ONLY
- #ifdef TERM_BODY
- #undef ESC
- #include <term.h> /* from Mgr, not gnuplot */
-
-
-
- static int MGR_border = 5;
- static int MGR_winnbr = 0;
-
- static int MGR_rowcount = 24;
- static int MGR_winwidth = MGR_XMAX;
- static int MGR_winheight = MGR_YMAX;
- static int MGR_vchar = MGR_VCHAR;
- static int MGR_hchar = MGR_HCHAR;
-
-
- TERM_PUBLIC void MGR_init()
- {
- char res[300];
- int winnbr;
- int w, h, bor;
-
- m_setup( 0);
- m_ttyset();
-
- m_getinfo( G_SYSTEM);
- if( m_gets( res) && sscanf( res, "%*s%d%d%d", &w, &h, &bor) == 3)
- MGR_border = bor;
-
- m_newwin( 0, 0, MGR_winwidth+2*MGR_border, MGR_winheight+2*MGR_border);
- if( m_gets( res) && sscanf( res, "%d", &winnbr) == 1)
- MGR_winnbr = winnbr;
- /* if no alt window is created, then the main window is used */
- /* and if size is different, term_tbl updated later */
- m_selectwin( MGR_winnbr);
- m_setmode( M_ABS);
-
- m_getinfo( G_FONT);
- if( m_gets( res) && sscanf( res, "%d %d", &w, &h) == 2) {
- MGR_vchar = h;
- MGR_hchar = w;
- }
- m_ttyreset();
-
- term->v_char = MGR_vchar;
- term->h_char = MGR_hchar;
- term->v_tic = MGR_vchar / 4;
- term->h_tic = MGR_hchar / 2;
-
- m_selectwin( 0);
- m_flush();
- }
-
-
- TERM_PUBLIC void MGR_graphics()
- {
- char res[32];
- int c, r, w, h;
-
- m_selectwin( MGR_winnbr);
- m_setmode( M_ACTIVATE);
- m_clear();
-
- /* we permit the user to reshape the window arbitrarily.
- do_plot calls boundary to recheck the term_tbl for each plot */
- m_ttyset();
- m_getinfo( G_WINSIZE);
- if( m_gets( res) && sscanf( res, "%d %d", &c, &r) == 2)
- MGR_rowcount = r;
- m_getinfo( G_COORDS);
- if( m_gets( res) && sscanf( res, "%d %d %d %d", &c, &r, &w, &h) == 4) {
- term->xmax = MGR_winwidth = w;
- term->ymax = MGR_winheight = h;
- }
- m_ttyreset();
- m_flush();
- }
-
-
- TERM_PUBLIC void MGR_text()
- {
- m_go( 0, 0);
- m_aligntext();
- if( MGR_winnbr == 0)
- m_move( 0, MGR_rowcount - 1);
- m_selectwin( 0);
- m_flush();
- }
-
-
- TERM_PUBLIC void MGR_linetype( linetype)
- int linetype;
- {
- /*
- * this mapping of colors is intended for a color sun on which
- * colors 0-23 are defined, 0 is white, 1 is black.
- */
- m_linecolor( B_SRC, (linetype < 0)? 1: (2 + (linetype % 22)));
- }
-
-
- TERM_PUBLIC void MGR_move( x, y)
- unsigned int x, y;
- {
- m_go( x, MGR_winheight - 1 - y);
- }
-
-
- TERM_PUBLIC void MGR_vector( x, y)
- unsigned int x, y;
- {
- m_draw( x, MGR_winheight - 1 - y);
- }
-
-
- TERM_PUBLIC void MGR_put_text( x, y, str)
- unsigned int x, y;
- char *str;
- {
- MGR_move( x, y - MGR_vchar/2);
- m_aligntext();
- m_printstr( str);
- }
-
-
- TERM_PUBLIC void MGR_reset()
- {
- m_destroywin( MGR_winnbr);
- MGR_winnbr = 0;
- m_setmode( M_ACTIVATE);
- m_flush();
- }
-
- #endif /* TERM_BODY */
-
- #ifdef TERM_TABLE
-
- TERM_TABLE_START(mgr_driver)
- "mgr", "Mgr window system",
- /* dimensions nominal, replaced during MGR_graphics call */
- MGR_XMAX, MGR_YMAX, MGR_VCHAR, MGR_HCHAR,
- MGR_VTIC, MGR_HTIC, options_null, MGR_init, MGR_reset,
- MGR_text, null_scale, MGR_graphics, MGR_move, MGR_vector,
- MGR_linetype, MGR_put_text, null_text_angle,
- null_justify_text, do_point, do_arrow, set_font_null
- TERM_TABLE_END(mgr_driver)
-
- #undef LAST_TERM
- #define LAST_TERM mgr_driver
-
- #endif /* TERM_TABLE */
- #endif /* TERM_PROTO_ONLY */
-
- /*
- * NAME: mgr
- *
- * OPTIONS: none
- *
- * SUPPORTS: Mgr Window system
- *
- * Further Info: don't even now this system
- *
- */